<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
            示例 1：
            输入：nums = [-4,-1,0,3,10]
            输出：[0,1,9,16,100]
            解释：平方后，数组变为 [16,1,0,9,100]
            排序后，数组变为 [0,1,9,16,100]

            示例 2：
            输入：nums = [-7,-3,2,3,11]
            输出：[4,9,9,49,121]

            时间：O(n)
            空间：O(1)
        */
        var sortedSquares = function(nums) {
          // 先求平方
          for (let i = 0; i < nums.length; i++) {
            nums[i] = nums[i] ** 2
          }

          // 声明中转数组
          let arr = new Array(nums.length).fill(-Infinity)

          // 这是arr里面的指针
          let k = nums.length - 1;
          // i是左指针，j是右指针，必须写i<=j而不是i<j，否则会有一个元素无法赋值
          for (let i = 0, j = nums.length - 1; i <= j;) {
            // 如果左指针的值比右指针的值大，则用左指针的值放到arr的末尾
            if (nums[i] > nums[j]) {
                arr[k] = nums[i]
                k--
                i++
            } else if (nums[i] <= nums[j]) {
                arr[k] = nums[j]
                k--
                j--
            }
          }
          return arr
        };
        console.log(sortedSquares([-4,-1,0,3,10]), 'sortedSquares');
        
    </script>
</body>
</html>